The purpose of this workflow is to analyze the results from 2.1_chromaprobs.Rmd That workflow imputed local chromatin states for each transcript, and scanned those states for effects on transcription in the DO.
This workflow compares the eQTL mapped to chromatin and to haplotypes.
library(here);library(qtl2);library(gprofiler2);library(stringr)
library(msigdbr);library(fgsea);library(pheatmap);library(biomaRt)
all.var <- ls()
lib.loaded <- as.logical(length(which(all.var == "mus")))
if(!lib.loaded){
mus <- useMart("ENSEMBL_MART_ENSEMBL", dataset = "mmusculus_gene_ensembl",
host = "may2017.archive.ensembl.org")
}
is.interactive = FALSE
#is.interactive = TRUE
all.code.dir <- list.files(here("Code"), full.names = TRUE)
for(i in 1:length(all.code.dir)){
all.fun <- list.files(all.code.dir[i], full.names = TRUE)
for(j in 1:length(all.fun)){source(all.fun[j])}
}
data(CCcolors)
chrom.colors <- colors.from.values(1:8, use.pheatmap.colors = TRUE)
transcript.info <- readRDS(here("Data", "RNASeq", "RNASeq_gene_info.RData"))
ch.coef <- readRDS(here("Results", "chQTL", "chQTL.coef.RDS"))
ch.lod <- readRDS(here("Results", "chQTL", "chQTL.lod.RDS"))
ch.r2 <- readRDS(here("Results", "chQTL", "chQTL.R2.RDS"))
e.coef <- readRDS(here("Results", "eQTL", "eQTL.coef.RDS"))
e.lod <- readRDS(here("Results", "eQTL", "eQTL.lod.RDS"))
e.r2 <- readRDS(here("Results", "eQTL", "eQTL.R2.RDS"))
chrom.mats <- readRDS(here("Results", "ChromHMM", "008_states_C", "Chromatin_States_8_full_gene_1000.RData"))
gene.names <- transcript.info[match(rownames(e.lod), transcript.info[,"ensembl_gene_id"]),"external_gene_name"]
chrom.states <- readRDS(here("Data", "chQTL", "Expanded_Chromatin.RDS"))
expr.data <- readRDS(here("Data", "DOQTL", "DO_Expression.RDS")) #pulled from dataset.expr.petr by 2.0_chromaprobs_setup.Rmd
expr <- expr.data$expr
covar <- expr.data$covar
transcript.haplotypes <- readRDS(here("Data", "DOQTL", "transcript.haplotypes.RDS"))
strain.key <- read.table(here("Data", "support_files", "strain.color.table.txt"),
sep = "\t", stringsAsFactors = FALSE, comment.char = "*")
do.data <- load(here("Data", "DOQTL", "Svenson_DO850_for_eQTL_viewer_v9.RData"))
The following plot compares the maximum LOD score from each chromatin eQTL to the LOD scores from the cis genetic haplotypes. In all cases, the chromatin LOD scores are either the same as the eQTL LOD scores or less. There are no instances where the chromatin explains the expression better than the genetics.
max.ch.lod <- sapply(ch.lod, function(x) max(x, na.rm = TRUE))
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
## Warning in max(x, na.rm = TRUE): no non-missing arguments to max; returning -Inf
plot(e.lod, max.ch.lod, xlab = "eQTL LOD score",
ylab = "Maximum Chromatin eQTL LOD Score")
abline(0,1)
We also calculated the R2 for each linear model using either haplotype probabilities or chromatin probabilities plus covariates to explain transcript level. This way we can get a sense of how much variance in the expression each type of data is explaining.
The chromatin variance explained and genetics variance explained are very highly correlated. There are many cases in which the chromatin does not explain as much variance as the genetics. There are also cases in which the chromatin explains more variance, but all of these cases are probably within the error of the model. There are not outstanding cases in which the chromatin explains a lot more than the genetics.
max.ch.r2 <- sapply(ch.r2, function(x) if(length(x) == 0){return(NA)}else{max(x, na.rm = TRUE)})
r2.diff <- e.r2 - max.ch.r2
pt.col <- rep("gray", length(r2.diff))
pt.col[which(r2.diff < 0)] <- "red"
plot(e.r2, max.ch.r2, xlab = "eQTL R2", cex = 0.5,
ylab = "Maximum Chromatin eQTL R2", col = pt.col, pch = 16)
abline(0,1)
The following plot shows the distribution of the difference in R2 between the genetic eQTL and the chromatin eQTL.
r2.diff <- e.r2-max.ch.r2
hist(r2.diff, breaks = 100)
better.chrom.locale <- which(e.r2-max.ch.r2 < 0)
better.chrom.r2.names <- gene.names[better.chrom.locale]
better.chrom.r2 <- e.r2[better.chrom.locale]
better.chrom.ch.r2 <- max.ch.r2[better.chrom.locale]
There are some genes for which there is a big genetic eQTL, but very little variation in the chromatin. Here we spend some time exploring these mismatched genes.
We defined genes with a big mismatch between the genetic and chromatin eQTL scores as genes with an R2 difference greater than 0.1.
r2diff.order <- order(r2.diff, decreasing = TRUE)
big.diff <- gene.names[which(r2.diff > 0.1)]
This set of 777 genes is highly enriched for ribosomal genes.
enrich <- gost(big.diff, organism = "mmusculus", source = "GO")
if(is.interactive){quartz(height = 10, width = 7)}
plot.enrichment.vis(enrich, order.by = "p_value", num.terms = 40)
We looked at the expression of these genes. The expression is not very highly correlated.
big.diff.id <- transcript.info[match(big.diff, transcript.info[,"external_gene_name"]),"ensembl_gene_id"]
id.locale <- match(big.diff.id, colnames(expr))
big.diff.expr <- expr[,id.locale]
pheatmap(cor(big.diff.expr, use = "pairwise.complete.obs"), show_rownames = FALSE,
show_colnames = FALSE)
We decomposed the expression matrix using PCA. There was no obvious way to cluster the genes into multiple groups, so we mapped the full group.
expr.decomp <- plot.decomp(t(big.diff.expr))
eigengene.decomp <- plot.decomp(big.diff.expr, pc = 2, plot.results = FALSE)
eigengenes <- eigengene.decomp$u
rownames(eigengenes) <- rownames(expr)
We scanned these top two eigengenes to look for trans eQTL. Both eigengenes do have QTLs. Both QTLs encompass genes in the expression block. I will take these out and rescan.
eigengene.scan <- scan1(genoprobs, eigengenes, kinship = K, addcovar = covar)
for(i in 1:ncol(eigengenes)){
if(is.interactive){quartz(width = 10, height = 3)}
par(mar = c(2,4,2,2))
plot(eigengene.scan, lodcol = i, map = map, main = paste("Eigengene", i))
}
qtl.peaks <- find_peaks(eigengene.scan, map = map, threshold = 6, prob = 0.95)
qtl.genes <- local.genes <- vector(mode = "list", length = nrow(qtl.peaks))
for(i in 1:length(qtl.genes)){
region <- paste0(qtl.peaks[i,3], ":", qtl.peaks[i,6]*1e6, ":", qtl.peaks[i,7]*1e6)
qtl.genes[[i]] <- getBM("external_gene_name", "chromosomal_region", region, mus)
local.genes[[i]] <- intersect(qtl.genes[[i]][,1], big.diff)
}
Take out local genes and rescan. The chromosome 11 QTL is still there, but the chromosome 3 QTL dips down a fair bit. Hmm…
out.genes <- setdiff(big.diff, unlist(local.genes))
out.id <- transcript.info[match(out.genes, transcript.info[,"external_gene_name"]), "ensembl_gene_id"]
id.locale <- match(out.id, colnames(expr))
sub.expr <- expr[,id.locale]
eigengene.decomp <- plot.decomp(sub.expr, pc = 2, plot.results = FALSE)
eigengenes <- eigengene.decomp$u
rownames(eigengenes) <- rownames(expr)
eigengene.scan <- scan1(genoprobs, eigengenes, kinship = K, addcovar = covar)
for(i in 1:ncol(eigengenes)){
if(is.interactive){quartz(width = 10, height = 3)}
par(mar = c(2,4,2,2))
plot(eigengene.scan, lodcol = i, map = map, main = paste("Eigengene", i))
}
Because the chromatin was measured in inbred hepatocytes, and DO gene expression was measured in whole liver, perhaps the genes for which the chromatin and genetic eQTLs differ are genes that are expressed in a cell type other than hepatocytes. That cell type might have a genetic eQTL and even have matching chromatin, but we would see a different chromatin pattern because we measured chromatin in hepatocytes only.
Here we investigate whether the genes that have widely diverging eQTL and chromatin eQTL LOD scores are primarily expressed in another cell type.
First we create gene lists for each cell type associated with the Aizarani liver cell type data sets.
#get cell-type specific gene sets (category C8)
#see https://www.gsea-msigdb.org/gsea/msigdb/genesets.jsp?
cell.sets <- msigdbr(species = "Mus musculus", category = "C8", subcategory = "")
cell.genes <- set_to_list(cell.sets, set.name = "AIZARANI")
Then we use each of these as a gene set in gene set enrichment.
#order the genes by the difference in R2 between the genetic
#and chromatin eQTLs.
ordered.genes <- r2.diff[r2diff.order]
names(ordered.genes) <- gene.names[r2diff.order]
ordered.genes <- ordered.genes[which(!is.na(ordered.genes))]
cell.enrich <- fgsea::fgseaMultilevel(pathways = cell.genes, stats = ordered.genes,
minSize=15, maxSize=600, gseaParam = 1, scoreType = "pos")
namecol <- which(colnames(cell.enrich) == "pathway")
path.names <- sapply(strsplit(gsub("AIZARANI_LIVER_", "", cell.enrich[[namecol]]), "_"), function(x) paste(x[2:length(x)], collapse = "_"))
plot.gsea.results(cell.enrich, "padj", path.names)
leading.genes <- cell.enrich[[8]][which(cell.enrich[[2]] < 0.05)]
names(leading.genes) <- cell.enrich[[1]][which(cell.enrich[[2]] < 0.05)]
The numerals in this dataset refer to t-SNE clusters. We also merged these clusters to see if there is a more general cell-type signature.s
There is no longer an enrichment if I merge the cell type clusters.
cell.types <- sapply(strsplit(path.names, "_"), function(x) paste(x[1:(length(x)-1)], collapse = "_"))
u_cell.types <- unique(cell.types)
merged.cell.genes <- vector(mode = "list", length = length(u_cell.types))
names(merged.cell.genes) <- u_cell.types
for(i in 1:length(u_cell.types)){
type.locale <- which(cell.types == u_cell.types[i])
merged.genes <- unique(unlist(cell.genes[type.locale]))
merged.cell.genes[[i]] <- merged.genes
}
merged.cell.enrich <- fgsea::fgseaMultilevel(pathways = merged.cell.genes,
stats = ordered.genes, minSize=15, maxSize=600, gseaParam = 1, scoreType = "pos")
namecol <- which(colnames(cell.enrich) == "pathway")
plot.gsea.results(merged.cell.enrich, "pval", p.thresh = 1)
#get GO term gene sets
#see https://www.gsea-msigdb.org/gsea/msigdb/genesets.jsp?
go.mf <- msigdbr(species = "Mus musculus", category = "C5", subcategory = "GO:MF")
go.cc <- msigdbr(species = "Mus musculus", category = "C5", subcategory = "GO:CC")
go.bp <- msigdbr(species = "Mus musculus", category = "C5", subcategory = "GO:BP")
go.mf.genes <- set_to_list(go.mf)
go.bp.genes <- set_to_list(go.bp)
go.cc.genes <- set_to_list(go.bp)
go.mf.enrich <- fgsea::fgseaMultilevel(pathways = go.mf.genes, stats = ordered.genes,
minSize=15, maxSize=600, gseaParam = 0)
## Warning in fgsea::fgseaMultilevel(pathways = go.mf.genes, stats =
## ordered.genes, : For some pathways, in reality P-values are less than 1e-10. You
## can set the `eps` argument to zero for better estimation.
go.bp.enrich <- fgsea::fgseaMultilevel(pathways = go.bp.genes, stats = ordered.genes,
minSize=15, maxSize=600, gseaParam = 0)
## Warning in fgsea::fgseaMultilevel(pathways = go.bp.genes, stats =
## ordered.genes, : For some pathways, in reality P-values are less than 1e-10. You
## can set the `eps` argument to zero for better estimation.
go.cc.enrich <- fgsea::fgseaMultilevel(pathways = go.cc.genes, stats = ordered.genes,
minSize=15, maxSize=600, gseaParam = 0)
## Warning in fgsea::fgseaMultilevel(pathways = go.cc.genes, stats =
## ordered.genes, : For some pathways, in reality P-values are less than 1e-10. You
## can set the `eps` argument to zero for better estimation.
leading.mf.genes <- go.mf.enrich[[8]][which(go.mf.enrich[[3]] < 0.05)]
names(leading.mf.genes) <- go.mf.enrich[[1]][which(go.mf.enrich[[3]] < 0.05)]
leading.bp.genes <- go.mf.enrich[[8]][which(go.bp.enrich[[3]] < 0.05)]
names(leading.bp.genes) <- go.bp.enrich[[1]][which(go.mf.enrich[[3]] < 0.05)]
leading.cc.genes <- go.mf.enrich[[8]][which(go.cc.enrich[[2]] < 0.05)]
plot.gsea.results(go.cc.enrich, "padj", p.thresh = 1e-6, plot.label = "GO:CC")
I also tried transcription factor gene lists, and immune gene lists, and none had any significant enrichments.
#get GO term gene sets
#see https://www.gsea-msigdb.org/gsea/msigdb/genesets.jsp?
gene.sets <- msigdbr(species = "Mus musculus", category = "H") #hallmark gene sets
gene.sets <- msigdbr(species = "Mus musculus", category = "C8") #cell-specific gene sets
gene.lists <- set_to_list(gene.sets)
gene.enrich <- fgsea::fgseaMultilevel(pathways = gene.lists, stats = ordered.genes,
minSize=15, maxSize=600, gseaParam = 0)
## Warning in fgsea::fgseaMultilevel(pathways = gene.lists, stats =
## ordered.genes, : For some pathways, in reality P-values are less than 1e-10. You
## can set the `eps` argument to zero for better estimation.
plot.gsea.results(gene.enrich)
plot.gsea.results(cell.enrich, "padj", p.thresh = 0.1)
We normalized the transcript position to examine whether high LOD scores occurred mostly at the TSS, or at other regions.
It actually appears that there is a dip in average LOD score right at the TSS, and a peak in average LOD score in the initial part of the gene after the TSS.
test.idx <- 1:length(ch.lod)
#test.idx <- big.diff.locale
norm.ch <- vector(mode = "list", length = length(ch.lod[test.idx]))
names(norm.ch) <- rownames(e.lod)[test.idx]
for(x in 1:length(test.idx)){
if(is.interactive){report.progress(x, length(test.idx))}
if(!is.null(ch.lod[[x]])){
norm.ch[[x]] <- center.on.feature(gene.names[x], transcript.info, ch.lod[[x]][,1],
feature = "full")
}
}
lod.by.pos <- plot.centered.vals(norm.ch, seq.by = 0.01, min.representation = 10,
ylim = c(0, 10), plot.label = "Mean LOD Score by Position",
ylab = "Mean LOD Score", return.means = FALSE)
abline(v = c(0,1))
We binned the genes by LOD score, and plotted the same curve as above for each bin. The plot below shows that genes across the range of LOD scores all have this dip in LOD score at the TSS. The color indicates the maximum lod score of the group of genes. (red for higher LOD scores, blue for lower LOD scores).
#also look just by high and low LOD score genes
#the pattern is the same for both, except that high LOD
#score genes have higher LOD scores througout the gene
#body than low LOD score genes.
lod.thresh = seq(2,100, 2)
lod.bins <- consec.pairs(lod.thresh)
lod.col <- colors.from.values(lod.thresh, use.pheatmap.colors = TRUE)
for(l in nrow(lod.bins):1){
lod.bin <- which(apply(lod.by.pos, 1, function(x)
max(x, na.rm = TRUE) >= lod.bins[l,1] && max(x, na.rm = TRUE) <= lod.bins[l,2]))
if(l == nrow(lod.bins)){
plot(as.numeric(colnames(lod.by.pos)), colMeans(lod.by.pos[lod.bin,],
na.rm = TRUE), type = "l", ylim = c(0,100), col = lod.col[l],
ylab = "Mean LOD Score", xlab = "Relative Genomic Position")
}else{
if(length(lod.bin) > 10){
points(as.numeric(colnames(lod.by.pos)), colMeans(lod.by.pos[lod.bin,],
na.rm = TRUE), type = "l", col = lod.col[l])
}
}
}
abline(v = c(0,1))
In the figures below, we show the average coefficients for each state across the gene body. We only include non-zero coefficients. This tells us the effect of each state at each position when it actually varies at that position.
I had done this earlier using all coefficients, and it looked as if state 7 had a dip in effect at the TSS. It does, but only because it is invariant at the TSS across strains for most genes. We should also have a measure of presence and variance across the gene body.
The chromatin states have the same directionality biases that we observed in the inbred strains. For example, states 1 and 2 are negatively associated with expression, and state 7 is positively associated with expression.
We see very similar spatial pattern to that seen in the inbred mice.
State 8 coefficients dip right at the TSS. State 7 coefficients are high everywhere, but take a dip at the TSS. This is a little different from the inbred mice, where the dip seems to occur upstream of the TSS. State 5 coefficients were high in the body of the gene State 4 coefficients were pretty close to 0 everywhere State 3 coefficients took a little dip by the TSS State 1 and state 2 coefficients were low everywhere, especially near the TSS
norm.ch.coef <- ch.coef
names(norm.ch.coef) <- rownames(e.lod)
for(x in 1:length(ch.coef)){
if(is.interactive){report.progress(x, length(ch.coef))}
if(!is.null(ch.coef[[x]])){
norm.pos <- center.on.feature(gene.names[x], transcript.info, ch.coef[[x]][,1],
feature = "full")
rownames(norm.ch.coef[[x]]) <- names(norm.pos)
}
}
all.state.coef <- vector(mode = "list", length = 8)
names(all.state.coef) <- 1:8
for(s in 1:8){
if(is.interactive){quartz(width = 10, height = 4)}
cat("### State", s, "\n")
norm.state <- lapply(norm.ch.coef, function(x) x[,s])
non.missing.state <- norm.state
for(i in 1:length(norm.state)){
zero.locale <- which(non.missing.state[[i]] == 0)
if(length(zero.locale) > 0){
non.missing.state[[i]][zero.locale] <- NA
}
}
all.state.coef[[s]] <- plot.centered.vals(non.missing.state, seq.by = 0.01, min.representation = 10,
ylim = c(-0.3, 0.3), plot.label = paste("State", s),
ylab = "Mean Non-Zero Coefficient", return.means = FALSE)
abline(h = 0, v = c(0,1))
cat("\n\n")
}
Do the dips we see above represent dips toward zero or away from zero? Below we show the absolute value of the average coefficient to get a better handle on which states have stronger effects near the TSS, and which states have weaker effects.
The strength of the effect of state 7 takes a dip at the TSS. The strength of the effect of state 1 also take a bit of a dip right at the TSS, but is high on either side. The average effect of state 4 goes up a bit at the TSS. States 2, 3, 5, and 8 are all fairly level across the gene.
all.state.mag <- vector(mode = "list", length = 8)
names(all.state.mag) <- 1:8
for(s in 1:8){
if(is.interactive){quartz(width = 10, height = 4)}
cat("### State", s, "\n")
norm.state <- lapply(norm.ch.coef, function(x) x[,s])
abs.state <- lapply(norm.state, function(x) if(length(x) > 0){abs(x)}else{NA})
non.missing.state <- abs.state
for(i in 1:length(norm.state)){
zero.locale <- which(non.missing.state[[i]] == 0)
if(length(zero.locale) > 0){
non.missing.state[[i]][zero.locale] <- NA
}
}
all.state.mag[[s]] <- plot.centered.vals(non.missing.state, seq.by = 0.01,
min.representation = 10, ylim = c(0, 0.5), plot.label = paste("State", s),
ylab = "Mean Non-Zero Coefficient Magnitude", return.means = FALSE)
abline(h = 0, v = c(0,1))
#abline(h = mean(all.state.mag[[s]], na.rm = TRUE))
cat("\n\n")
}
cat("### Mean State Effect Size\n")
barplot(sapply(all.state.mag, function(x) mean(x, na.rm = TRUE)), col = chrom.colors,
main = "Mean Effect Magnitude")
cat("\n")
The figures below show the proportion of the genes at any given gene body position that have variation in the given state across strains.
What these figures show is that the placement of state 7 is highly consistent right at the TSS because there is a dip in variation right at that point. Variation then increases later in the body of the gene. This is the lowest value seen for any state, suggesting its placement at the TSS is important to transcription.
On the other hand, the variation in state 8 goes up at the TSS, suggesting that it may play a more regulatory role in that position.
Other states are much less conserved relative to the position in the gene body. States 4, 5, 6 have high variation throught the gene body.
State 1 is an interesting one. We know from the analysis in the inbred animals that its abundance is very low near the TSS and then increases as you move toward the TES. However the proportion of genes with variation in that state across strains decreases as you move toward the TSS.
all.state.var <- vector(mode = "list", length = 8)
names(all.state.var) <- 1:8
for(s in 1:8){
if(is.interactive){quartz(width = 10, height = 4)}
cat("### State", s, "\n")
norm.state <- lapply(norm.ch.coef, function(x) x[,s])
non.missing.state <- norm.state
for(i in 1:length(norm.state)){
non.zero.locale <- which(non.missing.state[[i]] != 0)
if(length(non.zero.locale) > 0){
non.missing.state[[i]][non.zero.locale] <- 1
}
}
all.state.var[[s]] <- plot.centered.vals(non.missing.state, seq.by = 0.01,
min.representation = 10, ylim = c(0, 1.1), plot.label = paste("State", s),
ylab = "Proportion Genes With Variation in State", return.means = FALSE)
abline(h = 0, v = c(0,1))
cat("\n\n")
}
We looked at which genes had variation in state 7 at the TSS.
state.seven.var <- all.state.var[[7]]
tss.pt <- get.nearest.pt(as.numeric(colnames(state.seven.var)), 0)
state.var.locale <- which(state.seven.var[,tss.pt] == 1)
var.id <- rownames(state.seven.var)[state.var.locale]
enrich <- gost(var.id, organism = "mmusculus")
plot.enrichment(enrich, order.by = "p_value")
To assess the involvement of a given chromatin state in regulation of transcription, we looked at whether the state varied across strains at each position, what the magnitude of the effect on expression was at each position, and what the direction of the effect on expression was at each position.
All states had consistent magnitude of effect across the gene body. That is, when they were present, and when there was variation in that state, the effect did not depend on position in the gene body. There are lots of wiggles in the lines, but no stark trends.
s = 8
one.state.coef <- all.state.coef[[s]]
one.state.mag <- all.state.mag[[s]]
one.state.var <- all.state.var[[s]]
common.locale <- Reduce("intersect", list(colnames(one.state.coef), colnames(one.state.mag),
colnames(one.state.var)))
coef.locale <- match(common.locale, colnames(one.state.coef))
mag.locale <- match(common.locale, colnames(one.state.mag))
var.locale <- match(common.locale, colnames(one.state.var))
mean.coef <- colMeans(one.state.coef[,coef.locale], na.rm = TRUE)
mean.var <- colMeans(one.state.var[,var.locale], na.rm = TRUE)
mean.mag <- colMeans(one.state.mag[,mag.locale], na.rm = TRUE)
pairs(cbind(mean.coef, mean.var, mean.mag))
There is a dip in LOD score right at the TSS, suggesting that this position is not used much to regulate variations in strain-specific expression. We see that state 7 is very consistently represented at this position across strains. Where there is variation in this state at the TSS, it has a positive effect on expression.
State 7 is very consistently represented at the TSS, and has very little variation across strains at that position. When state 7 does vary at the TSS,
Further on in the gene body it varies more.